package com.tao.YanMoDesignPattern.Order.case3_bake;

/**
 * @Author Mi_Tao
 * @Date 2023/8/26
 * @Description
 * @Version 1.0
 **/
public class Client {
    // 测试一下撤销和恢复的功能
    public static void main(String[] args) {
        // 组织命令和接受者
        OperationApi operation = new Operation();
        // 创建命令对象，并组装命令和接受者
        AddCommand addCommand = new AddCommand(operation,5);
        SubstarctCommand substarctCommand = new SubstarctCommand(operation,3);
        // 把命令设置到持有者，也就是计算器里面
        Calculator calculator = new Calculator();
        calculator.setAddCommand(addCommand);
        calculator.setSubCommand(substarctCommand);

        // 执行命令
        calculator.addPressd();
        System.out.println("进行一次加法运算，结果为："+operation.getResult());
        calculator.substractPressd();
        System.out.println("进行一次减法运算，结果为："+operation.getResult());

        // 测试撤销
        calculator.undoPressed();
        System.out.println("撤销一次，结果为："+operation.getResult());
        calculator.undoPressed();
        System.out.println("再撤销一次，结果为："+operation.getResult());

        // 测试恢复
        calculator.redoPressded();
        System.out.println("恢复一次，结果为："+operation.getResult());
        calculator.redoPressded();
        System.out.println("再恢复一次，结果为："+operation.getResult());
    }
}
